﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using CodeSaude.Domain.Entities;
using CodeSaude.Domain.Enums;

namespace CodeSaude.Application.ViewModels
{
    public class UsuarioViewModel
    {
        public UsuarioViewModel()
        {
            ListaSituacoes = new List<SelectListItem>();
            ListaGruposUsuario = new List<SelectListItem>();
        }

        public int UsuarioId { get; set; }

        [Required(ErrorMessage = @"O Nome do usuário é obrigatório")]
        [Display(Name = @"Nome")]
        public string Nome { get; set; }

        [Required(ErrorMessage = @"O Email do usuário é obrigatório")]
        [Display(Name = @"Email")]
        public string Email { get; set; }

        public string Senha { get; set; }

        [Required(ErrorMessage = @"O CPF do usuário é obrigatório")]
        [Display(Name = @"CPF")]
        public string Cpf { get; set; }

        [Required(ErrorMessage = @"O Login é obrigatório")]
        [Display(Name = @"Login")]
        public string Login { get; set; }

        [DisplayName(@"Status")]
        [Required(ErrorMessage = @"O situação é obrigatório")]
        public int IdSituacao { get; set; }
        public string Situacao { get; set; }
        public IEnumerable<SelectListItem> ListaSituacoes { get; set; }

        [DisplayName(@"Grupo do Usuário")]
        [Required(ErrorMessage = @"O Grupo do usuário é obrigatório")]
        public int GrupoUsuarioId { get; set; }
        public string NomeGrupo { get; set; }
        public IEnumerable<SelectListItem> ListaGruposUsuario { get; set; }
        //public virtual GrupoUsuario GrupoUsuario { get; set; }

         public int? FlagSenhaPadrao { get; set; }
        public int? FlagAtualizado { get; set; }

        public string ClasseCssLabelSituacao
        {
            get
            {
                var cssClassLabel = string.Empty;
                switch (IdSituacao)
                {
                    case (int)SituacaoEnum.Ativo:
                        cssClassLabel = "label sitAtivo";
                        break;
                    case (int)SituacaoEnum.Inativo:
                        cssClassLabel = "label sitInativo";
                        break;
                }

                return cssClassLabel;
            }
        }
    }
}
